﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kaskelot.Services.Model;

namespace Stockholm.SOA.Kaskelot.WCF.ServiceImplementation.Mapping
{
	public static class FunktionExtensions
	{
		public static DataContracts.Funktion ToContract(this Funktion entity)
		{
			DataContracts.Funktion b = new DataContracts.Funktion();

			CopyFromEntity(entity, b, false);

			return b;
		}

		public static DataContracts.Funktion ToMinimalContract(this Funktion entity)
		{
			DataContracts.Funktion b = new DataContracts.Funktion();

			CopyFromEntity(entity, b, true);

			return b;
		}

		public static Funktion ToEntity(this DataContracts.Funktion b)
		{
			Funktion entity = new Funktion();

			CopyToEntity(b, entity);

			return entity;
		}

		public static void UpdateEntity(this Funktion entity, DataContracts.Funktion Funktion)
		{
			CopyToEntity(Funktion, entity);
		}

		private static void CopyFromEntity(Funktion from, DataContracts.Funktion to, bool minimal)
		{
			to.Id = from.Id;
			to.ValId = from.ValId;
			to.Andrad = from.Andrad;
			to.AndradAv = from.AndradAv;
			to.Skapad = from.Skapad;
			to.SkapadAv = from.SkapadAv;

			to.Beskrivning = from.Beskrivning;
			to.PublikBeskrivning = from.PublikBeskrivning;
			to.Arvode = from.Arvode;
			to.FastErsattning = from.FastErsattning;
			to.ArkivIntegration = from.ArkivIntegration;
			to.LISAIntegration = from.LISAIntegration;
		}

		private static void CopyToEntity(DataContracts.Funktion from, Funktion to)
		{
			to.Id = from.Id;
			to.ValId = from.ValId;
			to.Andrad = from.Andrad;
			to.AndradAv = from.AndradAv;
			to.Skapad = from.Skapad;
			to.SkapadAv = from.SkapadAv;

			to.Beskrivning = from.Beskrivning;
			to.PublikBeskrivning = from.PublikBeskrivning;
			to.Arvode = from.Arvode;
			to.FastErsattning = from.FastErsattning;
			to.ArkivIntegration = from.ArkivIntegration;
			to.LISAIntegration = from.LISAIntegration;
		}
	}
}
